Развернуть

Convert - класс

Данная публикация была переведена вручную для обеспечения более высокого качества. Для одновременного отображения текущей страницы и страницы с исходным англоязычным контентом щелкните "Предпочтения" и выберите пункт "Классический" в качестве предпочитаемого отображения.

Преобразует значение одного базового типа данных к другому базовому типу данных.

Пространство имен:  System
Сборка:  mscorlib (в mscorlib.dll)
Синтаксис

public static class Convert
Заметки

Статические методы класса Convert используются для поддержки преобразования в базовый тип данных и из него в .NET Framework. Поддерживаются следующие базовые типы: Boolean, Char, SByte, Byte, Int16, Int32, Int64, UInt16, UInt32, UInt64, Single, Double, Decimal, DateTime и String.

Преобразования в базовые типы и из базовых типов

Существует метод преобразования любого базового типа в любой другой базовый тип. Однако реальный вызов конкретного метода преобразования может выдавать один из пяти разных результатов в зависимости от значения базового типа во время выполнения и от целевого базового типа. Эти пять результатов таковы.

  • Преобразование не выполнено. Так бывает при попытке выполнить преобразование типа к нему самому (например, путем вызова метода Convert.ToInt32(Int32) с аргументом типа Int32). В таком случае метод просто возвращает экземпляр исходного типа.

  • InvalidCastException. Выбрасывается, когда заданное преобразование не поддерживается. Исключение InvalidCastException выбрасывается для следующих преобразований:

  • Объект FormatException. Это происходит, когда попытка преобразовать строковое значение в любой другой базовый тип заканчивается неудачей, поскольку строка имеет неправильный формат. Исключение генерируется для следующих преобразований:

    • Строка, преобразуемая в значение Boolean, не равна Boolean.TrueString или Boolean.FalseString.

    • Строка, преобразуемая в значение Char, состоит из нескольких символов.

    • Строка, преобразуемая в любой числовой тип, не распознается как допустимое числовое значение.

    • Строка, конвертируемая в DateTime, не распознается как допустимое значение даты и времени.

  • Преобразование выполнено успешно. Преобразование между двумя базовыми типами, не относящееся к перечисленным выше преобразованиям, все расширяющие преобразования, а также все сужающие преобразования, не приводящие к потере данных, выполняются успешно и метод возвращает значение целевого базового типа.

  • OverflowException. Выбрасывается, когда в результате сужающего преобразования происходит потеря данных. Например, при попытке преобразования экземпляра Int32 со значением 10000 в тип Byte, выбрасывается исключение OverflowException, поскольку значение 10000 лежит за пределами диапазона значений типа данных Byte.

Исключение не выбрасывается, если в результате преобразования числового типа происходит потеря точности (то есть, утрачиваются последние значащие цифры). Однако исключение выбрасывается, если результат превышает максимально допустимое значение для типа, возвращаемого данным методом преобразования.

Например, при преобразовании от типа Double к типу Single может происходить потеря точности, но исключение не выбрасывается. Однако, если значение типа Double слишком велико для представления в виде значения типа Single, выбрасывается исключение переполнения.

Преобразования из пользовательских объектов в базовые типы

Помимо поддержания преобразования между базовыми типами, метод Convert поддерживает преобразование любого пользовательского типа в любой базовый тип. Чтобы сделать это, пользовательский тип должен реализовать интерфейс IConvertible, который определяет методы для преобразования типа реализации в каждый из базовых типов. Преобразования, которые не поддерживаются определенным типом должны вызывать исключение InvalidCastException.

Когда метод ChangeType в качестве первого параметра передает пользовательский тип, или когда вызывается метод Convert.ToType (например, Convert.ToInt32(Object) или Convert.ToDouble(Object, IFormatProvider)) и передает экземпляр пользовательского типа в качестве первого параметра, ��етод Convert, в свою очередь, вызывает реализацию пользовательского типа IConvertible, чтобы выполнить преобразование. Дополнительные сведения см. в разделе Преобразование типов в .NET Framework.

Сведения о форматировании, связанные с языком и региональными параметрами

Все методы преобразования базового типа и метод ChangeType включают перегрузки, которые имеют параметр типа IFormatProvider. В следующем примере метод Convert.ToBoolean содержит следующие две перегрузки.

Параметр IFormatProvider может передавать используемые при выполнении преобразования сведения об особенностях форматирования, связанных с языком и региональными параметрами. Однако он игнорируется большинством методов преобразования базового типа. Используется только следующими методами преобразования базового типа:

  • Методами, которые преобразуют значение в численный тип. Параметр IFormatProvider используется перегрузкой с параметрами типа String и IFormatProvider. Также используется перегрузкой с параметрами типа Object и IFormatProvider, если тип времени выполнения объекта String.

  • Методами, которые преобразуют значение в дату и время. Параметр IFormatProvider используется перегрузкой с параметрами типа String и IFormatProvider. Также используется перегрузкой с параметрами типа Object и IFormatProvider, если тип времени выполнения объекта String.

  • Путем перегрузки Convert.ToString, которая включает параметр IFormatProvider и преобразует либо численное значение в строку или значение DateTime в строку.

Однако любой определенный пользователем типом, реализующий интерфейс IConvertible делает возможным использование параметра IFormatProvider.

Другие методы преобразования

Набор методов поддерживает преобразование массива байтов в String и обратно или в массив символов Юникод, состоящий из цифровых символов в кодировке Base64, а также обратное преобразование. Данные, выраженные как цифры в кодировке Base64, могут легко быть переданы по каналам данных, поддерживающим передачу только 7-битовых символов.

Примеры

В следующем примере демонстрируются некоторые методы класса Convert, предназначенные для выполнения преобразования, включая методы ToInt32, ToBoolean и ToString.

			double dNumber = 23.15;

			try {
				// Returns 23
				int    iNumber = System.Convert.ToInt32(dNumber);
			}
			catch (System.OverflowException) {
				System.Console.WriteLine(
							"Overflow in double to int conversion.");
			}
			// Returns True
			bool   bNumber = System.Convert.ToBoolean(dNumber);
			
			// Returns "23.15"
			string strNumber = System.Convert.ToString(dNumber);

			try {
				// Returns '2'
				char chrNumber = System.Convert.ToChar(strNumber[0]);
			} 
			catch (System.ArgumentNullException) {
				System.Console.WriteLine("String is null");
			}
			catch (System.FormatException) {
				System.Console.WriteLine("String length is greater than 1.");
			}

			// System.Console.ReadLine() returns a string and it
			// must be converted.
			int newInteger = 0;
			try {
				System.Console.WriteLine("Enter an integer:");
				newInteger = System.Convert.ToInt32(
									System.Console.ReadLine());
			}
			catch (System.ArgumentNullException) {
				System.Console.WriteLine("String is null.");
			}
			catch (System.FormatException) {
				System.Console.WriteLine("String does not consist of an " +
								"optional sign followed by a series of digits.");
			} 
			catch (System.OverflowException) {
				System.Console.WriteLine(
				"Overflow in string to int conversion.");
			}

			System.Console.WriteLine("Your integer as a double is {0}",
									 System.Convert.ToDouble(newInteger));


Иерархия наследования

System.Object
  System.Convert
Потокобезопасность

Любые открытые члены этого типа, объявленные как static (Shared в Visual Basic), являются потокобезопасными. Потокобезопасность членов экземпляров не гарантируется.
Платформы

Windows 7, Windows Vista, Windows XP с пакетом обновления 2 (SP2), Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 с пакетом обновления 4 (SP4), Windows Millennium Edition, Windows 98, Xbox 360, Zune

Среды .NET Framework и .NET Compact Framework поддерживают не все версии каждой платформы. Поддерживаемые версии перечислены в разделе Требования к системе для .NET Framework.
Сведения о версии

.NET Framework

Поддерживается в версиях: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Поддерживается в версии: 4

XNA Framework

Поддерживается в версиях: 3.0, 2.0, 1.0
Содержимое сообщества Добавить
Page view tracker